//导出 数据到excel的方法
import agentHttp from '@/utils/agentHttp.js';
import {
  initDataTime
} from '@/utils/index.js';

var idTmr;
//获取当前浏览器类型  
function getExplorer() {
  var explorer = window.navigator.userAgent;
  //ie    
  if (explorer.indexOf("MSIE") >= 0) {
    return 'ie';
  }
  //firefox    
  else if (explorer.indexOf("Firefox") >= 0) {
    return 'Firefox';
  }
  //Chrome    
  else if (explorer.indexOf("Chrome") >= 0) {
    return 'Chrome';
  }
  //Opera    
  else if (explorer.indexOf("Opera") >= 0) {
    return 'Opera';
  }
  //Safari    
  else if (explorer.indexOf("Safari") >= 0) {
    return 'Safari';
  }
}

//获取到类型需要判断当前浏览器需要调用的方法，目前项目中火狐，谷歌，360没有问题  
//win10自带的IE无法导出  
function exportExcel(option,url,name) {
  const params = initDataTime(option);
  agentHttp.postExcel(`adminApi/admin/${url}`, params).then((data) => {
    //ie的功能等会写
    if (getExplorer() == 'ie') {
      var curTbl = document.getElementById(tableid);
      var oXL = new ActiveXObject("Excel.Application");
      var oWB = oXL.Workbooks.Add();
      var xlsheet = oWB.Worksheets(1);
      var sel = document.body.createTextRange();
      sel.moveToElementText(curTbl);
      sel.select();
      sel.execCommand("Copy");
      xlsheet.Paste();
      oXL.Visible = true;

      try {
        var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
      } catch (e) {
        print("Nested catch caught " + e);
      } finally {
        oWB.SaveAs(fname);
        oWB.Close(savechanges = false);
        oXL.Quit();
        oXL = null;
        idTmr = window.setInterval("Cleanup();", 1);
      }

    } else {
      tableToExcel(name,data)
    }

  })

}




function Cleanup() {
  window.clearInterval(idTmr);
  CollectGarbage();
}

//判断浏览器后调用的方法，把table的id传入即可  
// var tableToExcel = (function (data) {
//   var uri = 'data:application/vnd.ms-excel;base64,',
//     template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
//     base64 = function (s) {
//       return window.btoa(unescape(encodeURIComponent(s)))
//     },
//     format = function (s, c) {
//       return s.replace(/{(\w+)}/g,
//         function (m, p) {
//           return c[p];
//         })
//     }
//     return function (table, name) {

//     if (!table.nodeType) table = document.getElementById(table)
//     var ctx = {
//       worksheet: name || 'Worksheet',
//       table: table.innerHTML
//     }
//     window.location.href = uri + base64(format(template, ctx))
//   }
// })()

var tableToExcel = function (name,content,data) {

          var blob = new Blob([content],data);
	    		var a = document.createElement('a');
	    		a.innerHTML = name ;      
  
          // // 指定生成的文件名
	    		a.download =`${name}.${new Date().toLocaleString()}.xls`        //下载文件的标题
	    		a.href = URL.createObjectURL(blob);                             //下载的流
	    		document.body.appendChild(a);
	    		
	    		var evt = document.createEvent("MouseEvents");            //创建一个新的是假对象
	    		evt.initEvent("click", false, false);                     // 绑定事件，禁止冒泡和默认事件
	    		a.dispatchEvent(evt);                                     //监听事件
	    		
          document.body.removeChild(a);
  
  }



export default exportExcel
